package com.yourenbang.lingyun.transaction.web.service.pay.withdraw;

import com.yourenbang.lingyun.core.message.Result;
import com.yourenbang.lingyun.transaction.exception.WichdrawFailException;
import com.yourenbang.lingyun.transaction.web.domain.dto.pay.FundPayApiDTO;
import com.yourenbang.lingyun.transaction.web.domain.po.FundAccountWithdrawPayment;
import com.yourenbang.lingyun.transaction.web.domain.vo.pay.FundPayApiVO;

import java.util.Map;

public interface WithdrawPayService {

    Result withDrawPreCheck(String withdrawPayType, Short platNo);

    /**
     * 提现
     *
     * @throws WichdrawFailException 明确失败
     */
    FundPayApiVO withDraw(FundPayApiDTO fundPayApiDTO);

    /**
     * 提现查询
     *
     * @throws WichdrawFailException 明确失败
     */
    void withDrawQuery(FundAccountWithdrawPayment fundAccountWithdrawPayment);

    /**
     * 回调（post请求,参数放body）
     *
     * @throws WichdrawFailException 明确失败
     */
    Result<FundAccountWithdrawPayment> withDrawNoticeBody(String payType, String param);

    /**
     * 回调（post请求,参数放表单）
     *
     * @throws WichdrawFailException 明确失败
     */
    FundAccountWithdrawPayment withDrawNoticeParam(String payType, Map<String, String> param);

    /**
     * 灵会算签约回调
     */
    void withdrawSigne(String param);

    /**
     * 提现次日结算发放
     *
     * @param batchNumber
     * @return
     */
    Result withDrawT1Pay(String batchNumber);
}
